<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        姓：<input type="text" v-model="firstName"><br><br>
        名：<input type="text" v-model="lastName"><br><br>
        <!-- 方式1：插值语法 -->
        全名：<span>{{firstName}}-{{lastName}}</span><br><br>

        <!-- 方式2：methods 函数调用形式 事件形式调用函数不传参不需要 ＋ ()  -->
        <!-- 全名2：<span>{{fullName()}}</span> -->

        <!-- 方式3：computed 计算属性：响应式依赖(缓存) -->
        <!-- 当一个数据受多个数据影响时，可以使用computed -->
        <!-- 多次使用，第一次执行会进行缓存，后续依赖进行更新才会继续调用,效率更高 -->
        <!-- computed的每一个计算属性都会被缓存起来，只要计算属性所依赖的属性发生变化，计算属性就会重新执行，视图也会更新 -->
        全名3:<span>{{fullName}}</span><br><br>
        全名3:<span>{{fullName}}</span><br><br>
        全名3:<span>{{fullName}}</span>
    </div>
    <script>
        Vue.config.productionTip = false;

        const vm = new Vue({
            el: "#app",
            data() {
                return {
                    firstName: "张",
                    lastName: "三"
                }
            },
            // methods: {
            //     fullName(){
            //         return this.firstName + this.lastName
            //     }
            // },
            computed: {
                // 完整写法：
                // fullName:{
                //     // 读取
                //     get(){
                //         // this指向 vm
                //         console.log(this)
                //         console.log("get调用");
                //         return this.firstName +"-"+ this.lastName
                //     },
                //     // fullName发生修改时调用，一般不修改
                //     set(value){
                //         const arr = value.split("-")
                //         console.log(arr);
                //         this.firstName = arr[0]
                //         this.lastName = arr[1]
                //     }
                // }

                // 简写：只读取
                fullName() {
                    return this.firstName + "-" + this.lastName
                }
            }
        })
    </script>
</body>
</html>